import axios from 'axios'
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import store from '@/store'

const requests = axios.create({
    // axios为使用者补全基础路径前缀/api，后续请求时无需额外在url中拼接/api
    baseURL: '/api',
    // 请求时限5s
    timeout: 5000
})
// 请求拦截器
requests.interceptors.request.use(config => {
    // 请求头中携带游客临时身份iD字段
    if (store.state.shopcart.USER_ID) {
        config.headers.userTempId = store.state.shopcart.USER_ID
    }
    // 登陆后将服务器响应回的token 配置到请求头中 以便下一个请求展示对应用户数据
    if(store.state.user.token){
        config.headers.token = store.state.user.token;
    }
    // 该效果只有触发请求时才会执行 start:开始
    nprogress.start()
    //config配置对象 中包含一个重要的headers属性
    return config

})
// 响应拦截器
requests.interceptors.response.use(res => {
    //该效果只有触发请求时才会执行 done:结束
    nprogress.done()
    // 服务器成功响应回的数据
    return res.data
}, err => {
    // 捕获错误
    return new Error('err')
})

export default requests